LD=ld
MV=mv
CC=gcc
CFLAGS=-fno-builtin -fno-pic -static -fno-strict-aliasing -Wall -m32 -fno-omit-frame-pointer -nostdinc -I../include
CFLAGS+=-fno-stack-protector
all: init sh ls cat date
	$(MV) ls sh date cat init ../
init: init.o prf.o str.o syscall.o
	$(LD) -N -e main -Ttext 0x1000000 -o init init.o prf.o str.o syscall.o
sh: sh.o prf.o str.o syscall.o
	$(LD) -N -e main -Ttext 0x1000000 -o sh sh.o prf.o str.o syscall.o
ls: ls.o prf.o str.o syscall.o time.o
	$(LD) -N -e main -Ttext 0x1000000 -o ls ls.o prf.o str.o syscall.o time.o
date: date.o prf.o str.o syscall.o time.o
	$(LD) -N -e main -Ttext 0x1000000 -o date date.o prf.o str.o syscall.o time.o
cat: cat.o prf.o str.o syscall.o time.o
	$(LD) -N -e main -Ttext 0x1000000 -o cat cat.o prf.o str.o syscall.o time.o
init.o: init.c
	$(CC) $(CFLAGS) -c $<
sh.o: sh.c
	$(CC) $(CFLAGS) -c $<
ls.o: ls.c
	$(CC) $(CFLAGS) -c $<
date.o: date.c
	$(CC) $(CFLAGS) -c $<
cat.o: cat.c
	$(CC) $(CFLAGS) -c $<
prf.o: prf.c
	$(CC) $(CFLAGS) -c $<
str.o: str.c
	$(CC) $(CFLAGS) -c $<
time.o: time.c
	$(CC) $(CFLAGS) -c $<
syscall.o: syscall.S
	$(CC) $(CFLAGS) -c $<
clean:
	rm -f sh ls cat date init *.o
